package com.smedi.ismedi.inmail.core.application.service;

import com.smedi.ismedi.inmail.core.application.query.vo.*;
import com.smedi.ismedi.inmail.core.domain.aggregatemodel.UserActionLog;

import java.util.List;

/**
 * 通知公告应用服务接口
 *
 * @author jiangqinxuan
 * @date 2021/07/26
 */
public interface OverviewApplicationService {

    /**
     * 导出 项目统计
     *
     * @param projectOverviews 项目统计 导出
     * @return fileKey
     */
    String exportProjectOverview(List<ProjectOverviewVo> projectOverviews);
    
    /**
     * 导出 项目统计（主体院）
     *
     * @param safetyCheckOrganizationOverviewVos 项目统计 导出
     * @return fileKey
     */
    String exportSafetyCheckOrganizationOverview(List<SafetyCheckOrganizationOverviewVo> safetyCheckOrganizationOverviewVos);

    /**
     * 导出 安全检查（项目）
     *
     * @param safetyCheckProjectOverviewVos 项目统计 导出
     * @return fileKey
     */
    String exportSafetyCheckProjectOverview(List<SafetyCheckProjectOverviewVo> safetyCheckProjectOverviewVos);

    /**
     * 导出 视频监控统计（主体院）
     *
     * @param videoMonitorOrganizationOverviewVos 视频监控统计 导出
     * @return fileKey
     */
    String exportVideoMonitorOrganizationOverview(List<VideoMonitorOrganizationOverviewVo> videoMonitorOrganizationOverviewVos);

    /**
     * 导出 视频监控统计（项目）
     *
     * @param videoMonitorProjectOverviewVos 视频监控统计 导出
     * @return fileKey
     */
    String exportVideoMonitorProjectOverview(List<VideoMonitorProjectOverviewVo> videoMonitorProjectOverviewVos);

    /**
     * 导出 人员考勤统计
     *
     * @param attendanceOverviews 人员考勤统计 导出
     * @return fileKey
     */
    String exportAttendanceOverview(List<AttendanceOverviewVo> attendanceOverviews);

    /**
     * 更新钉钉数据（组织信息 项目信息 考勤信息）
     *
     */
    void updateDingTalkData();

    void updateDingTalkPerson();
    /**
     * 导出钉钉组织考勤信息
     *
     * @param dingAttendanceOverViewVos 组织考勤信息
     * @return fileKey
     * */
    String exportDingAttendanceList(List<DingAttendanceOverViewVo> dingAttendanceOverViewVos);

    /**
     * 导出钉钉项目考勤信息
     *
     * @param voList 组织考勤信息
     * @return fileKey
     * */
    String exportDingAttendanceProjectList(List<DingAttendanceProjectOverViewVo> voList);

    /**
     * 人员是否与钉钉关联
     * */
    Boolean personExist(Long personId);

    /**
     * 根据项目id获取人员姓名
     * */
    List<String> peopleByProjectId(Long projectId);

}
